/**
 * 分页器函数
 * @param {number|string} current 当前页
 * @param {number|string} count 数据总条数
 * @param {number|string} limit 每页显示多少条数据
 * @param {number|string} size 页码数量
 * @param {string} className 样式类名
 * @returns {string} 返回分页器的 HTML 结构
 */
function ShowPage(current, count, limit, size = 5, className = 'digg') {
  let page = ''; // 用来拼接 HTML 结构

  // 当数据总条数大于每页显示的数据才会显示分页
  if (count > limit) {
    // 总分页数
    const pageCount = Math.ceil(count / limit);

    // 获取当前 URL 的查询参数（模拟 PHP 的 GetUrl 函数）
    const url = getCurrentUrl();

    page += `<div class="${className}">`; // 插入样式

    // 首页 & 上一页
    if (current == 1) {
      page += '<span class="disabled">首&nbsp;页</span>';
      page += '<span class="disabled">上一页</span>';
    } else {
      // 拼接 URL
      page += `<a href="${url}page=1">首&nbsp;页</a>`;
      page += `<a href="${url}page=${current - 1}">上一页</a>`;
    }

    // 处理页码
    let start, end;
    if (current <= Math.floor(size / 2)) {
      start = 1;
      end = pageCount < size ? pageCount : size;
    } else if (current >= pageCount - Math.floor(size / 2)) {
      start = pageCount - size + 1 <= 0 ? 1 : pageCount - size + 1;
      end = pageCount;
    } else {
      // 当前页刚好在中间位置
      start = current - Math.floor(size / 2);
      end = current + Math.floor(size / 2);
    }

    // 显示页码
    for (let i = start; i <= end; i++) {
      if (i == current) {
        page += `<span class="current">${i}</span>`;
      } else {
        page += `<a href="${url}page=${i}">${i}</a>`;
      }
    }

    // 下一页 & 尾页
    if (pageCount == current) {
      page += '<span class="disabled">下一页</span>';
      page += '<span class="disabled">尾&nbsp;页</span>';
    } else {
      page += `<a href="${url}page=${current + 1}">下一页</a>`;
      page += `<a href="${url}page=${pageCount}">尾&nbsp;页</a>`;
    }

    page += '</div>'; // div 结尾
  }

  return page;
}

/**
 * 获取当前 URL 的查询参数（模拟 PHP 的 GetUrl 函数）
 * @returns {string} 返回当前 URL 的查询字符串
 */
function getCurrentUrl() {
  const params = new URLSearchParams(window.location.search);
  params.delete('page'); // 删除 page 参数
  return `${window.location.pathname}?${params.toString()}&`;
}
